import * as mongoose from 'mongoose';
const Schema = mongoose.Schema;
export const ProductSchema = new Schema({
    title:{type:String,required:true},//商品标题
    subtitle:{type:String},//副标题
    category:{type:Schema.Types.ObjectId,ref:'Category'},//所属的分类
    price:{type:Number},//实际价格
    crossedOutPrice:{type:Number},//划线价格
    imageUrl:{type:String},//商品的图片
    description:{type:String},//商品描述
    isNew:{type:Boolean,default:true},//是否新品
    isRecommended:{type:Boolean,default:true},//是否推荐
    isPremium:{type:Boolean,default:true},//是否精品
    order:{//顺序号
        type:Number,
        default:100
    },
    isActive:{//是否可用
        type:Boolean,
        default:true
    },
    promotion:String,
    colors:{
        type:[String],
        default:[]
    },
    versions:{
        type:[String],
        default:[]
    }

},{
    timestamps:true,//当保存文档的时候自动创建createAt和updateAt两个字段，启用时间戳
    toJSON:{//定制toJSON方法，当文件转成JSON格式的时候调用
        virtuals:true,//启动虚拟属性
        //定义转换函数，用于修改文档 的JSON表现形式
        transform(doc,ret){
            //把_id转成id
            ret.id = ret._id.toHexString();
            //删除掉原来的_id
            delete ret._id;
            //删除掉原来的__v
            delete ret.__v;
        }
    }
})
//给商品添加一个虚拟属性，表示此商品对应的所有的图片
ProductSchema.virtual('productImages',{
   ref:'ProductImage',//要去哪个模型里找对应的数据
   localField:'_id',//用当前的商品文档中的哪个字段进行查询 
   foreignField:'product',//在对应的商品图片文档中哪个字段对应商品ID
   justOne:false //是否只找一条.
})